#ifndef NODO_H_
#define NODO_H_

#include "../EstructurasArbol/Clave.h"
#include "../EstructurasArbol/Constantes.h"
#include "../EstructurasArbol/Registro.h"
#include <vector>
#include <string.h>

using namespace std;

class Nodo : public Serializable {
	friend class ArbolBMas;
	friend class Interno;
	friend class Hoja;

private:
	int idNodo;
	int nivel;
	int espacioOcupado;
	int contador_claves;
	Clave* claves;

public:
	Nodo(int nivel,long size_node);
	virtual ~Nodo();

	bool isNodoHoja();
	bool isOverflow(long size_node);
	bool isUnderflow();

    int getCantidadClaves() const
    {
        return contador_claves;
    }

    Clave* getClaves() const
    {
        return claves;
    }

    int getEspacioOcupado() const
    {
        return espacioOcupado;
    }

    int getNivel() const
    {
        return nivel;
    }

    int getNumero() const
    {
        return idNodo;
    }
};

#endif /* NODO_H_ */
